home *** CD-ROM | disk | FTP | other *** search
/ Aminet 24 / Aminet 24 (1998)(GTI - Schatztruhe)[!][Apr 1998].iso / Aminet / dev / src / CdBS_KQSrc0_4.lha / KaliosisQuantrum / MORB / MapEditor.s < prev    next >
Text File  |  1998-01-01  |  4KB  |  244 lines

  1. *
  2. * CdBSian Obviously Universal & Interactive Nonsense (COUIN)
  3. * (Absurdité CdBSienne Manifestement Universelle et Interactive)
  4. * ©1997-1998, CdBS Software (MORB)
  5. * Map Editor
  6. * $Id: MapEditor.s 0.1 1997/09/14 22:00:05 MORB Exp MORB $
  7. *
  8.  
  9. ;fs "_MapEditor"
  10. _MapEditor:
  11.      move.l    _CurrentGui,MapEdLastGui
  12.  
  13.      lea       _SMedClrHandler(pc),a0
  14.      move.l    a0,_PreHandler
  15.      lea       _SMedHandler(pc),a0
  16.      move.l    a0,_PlayfieldClickHandler
  17.  
  18.      lea       MapEdGui(pc),a0
  19.      bra       _ChangeGui
  20.  
  21. ExitMapEd:
  22.      clr.l     _PlayfieldClickHandler
  23.  
  24.      move.l    MapEdLastGui(pc),a0
  25.      bra       _ChangeGui
  26.  
  27. MapEdLastGui:
  28.      ds.l      1
  29.  
  30. MapEdGui:
  31.      GENTRY    _VGroup,0,0
  32.  
  33.      GENTRY    _HGroup,0,0
  34.      GENTRY    _SmallButton,"X",ExitMapEd
  35.      GENTRY    _SmallButton,"I",_Iconify
  36.      GENTRY    _DragBar,MapEdTitle,0
  37.      GEND
  38.  
  39.      GENTRY    _HGroup,0,0
  40.      GENTRY    _Button,MELIffBk,_NYI
  41.      GENTRY    _Button,MELIffBr,_NYI
  42.      GEND
  43.  
  44.      GENTRY    _HGroup,0,0
  45.      GENTRY    _Button,MEShBk,_NYI
  46.      GENTRY    _Button,MEShBr,_NYI
  47.      GEND
  48.  
  49.      GENTRY    _Selector,0,0
  50.      GENTRY    _GerflorBank,0,0
  51.      GEND
  52.  
  53.      GEND
  54.  
  55. MapEdTitle:
  56.      dc.b      "COUIN's Map Editor",0
  57. MELIffBk:
  58.      dc.b      "Load IFF Gerflor bank",0
  59. MELIffBr:
  60.      dc.b      "Load IFF Brush",0
  61. MEShBk:
  62.      dc.b      "Show Gerflor bank",0
  63. MEShBr:
  64.      dc.b      "Show Gerflor Brushes",0
  65.      even
  66. ;fe
  67. ;fs "_SMedHandler"
  68. SMHLastOffset:
  69.      ds.l      1
  70. SMHLastMapAddr:
  71.      ds.l      1
  72.  
  73. _SMedClrHandler:
  74.      movem.l   SMHLastOffset(pc),d6/a0
  75.      move.l    a0,d0
  76.      beq.s     .Schneurfleugleup
  77.  
  78.      moveq     #0,d7
  79.      move.b    (a0),d7
  80.  
  81.      lea       pf_Bitmaps(a5),a4
  82.  
  83.      move.l    (a4)+,d3
  84.      add.l     d6,d3
  85.      move.l    d7,d2
  86.      bsr       _Gerflor
  87.      move.l    (a4)+,d3
  88.      add.l     d6,d3
  89.      move.l    d7,d2
  90.      bsr       _Gerflor
  91.      move.l    (a4)+,d3
  92.      add.l     d6,d3
  93.      move.l    d7,d2
  94.      bsr       _Gerflor
  95.      move.l    (a4)+,d3
  96.      add.l     d6,d3
  97.      move.l    d7,d2
  98.      bsr       _Gerflor
  99.  
  100. .Schneurfleugleup:
  101.      rts
  102.  
  103. _SMedHandler:
  104.      lea       Plf1,a5
  105.  
  106.      add.l     d0,d0
  107.      add.l     pf_X(a5),d0
  108.      lsr.l     #6,d0
  109.  
  110.      add.l     pf_Y(a5),d1
  111.      lsr.l     #4,d1
  112.  
  113.      move.l    pf_Width(a5),d7
  114.      mulu      d1,d7
  115.      add.l     d0,d7
  116.      add.l     pf_Map(a5),d7
  117.  
  118.      sub.l     pf_Y16(a5),d1
  119.      add.l     pf_BufY16(a5),d1
  120.      addq.l    #4,d1
  121.      mulu      #LineSize*TileHeight,d1
  122.  
  123.      move.l    #BufferHeight*LineSize,d2
  124.      cmp.l     d2,d1
  125.      bcs.s     .Ok
  126.      sub.l     d2,d1
  127. .Ok:
  128.  
  129.      addq.l    #4,d0
  130.      add.l     d0,d0
  131.      add.l     d0,d1
  132.  
  133.      move.l    d1,SMHLastOffset
  134.      move.l    d7,SMHLastMapAddr
  135.      move.l    d1,d6
  136.  
  137.      btst      #6,$bfe001
  138.      bne.s     .DontGlueGerflor
  139.  
  140.      move.l    d7,a0
  141.      move.b    #$a,(a0)
  142.      clr.l     SMHLastMapAddr
  143.  
  144. .DontGlueGerflor:
  145.      lea       pf_Bitmaps(a5),a4
  146.  
  147.      move.l    (a4)+,d3
  148.      add.l     d6,d3
  149.      moveq     #$a,d2
  150.      bsr       _Gerflor
  151.      move.l    (a4)+,d3
  152.      add.l     d6,d3
  153.      moveq     #$a,d2
  154.      bsr       _Gerflor
  155.      move.l    (a4)+,d3
  156.      add.l     d6,d3
  157.      moveq     #$a,d2
  158.      bsr       _Gerflor
  159.      move.l    (a4)+,d3
  160.      add.l     d6,d3
  161.      moveq     #$a,d2
  162.      bsr       _Gerflor
  163.      rts
  164. ;fe
  165.  
  166. ;fs "_GerflorBank"
  167. _GerflorBank:
  168.      dc.l      GBGetMinMax
  169.      dc.l      0
  170.      dc.l      GBRender
  171.      dc.l      0         ; GBClick
  172.  
  173. GBGetMinMax:
  174.      move.l    #GuiScreenWidth/2,d0
  175.      move.l    d0,ge_MinWidth(a0)
  176.      move.l    d0,ge_MaxWidth(a0)
  177.  
  178.      move.l    #256,d0
  179.      move.l    d0,ge_MinHeight(a0)
  180.      move.l    d0,ge_MaxHeight(a0)
  181.  
  182.      lea       ge_Size(a0),a1
  183.      move.l    a1,ge_Next(a0)
  184.      rts
  185.  
  186. GBRender:
  187.      move.l    #54,d0
  188.      moveq     #0,d5
  189.      moveq     #0,d7
  190.  
  191.      moveq     #15-1,d1
  192. .YLoop:
  193.      moveq     #8,d6
  194.      moveq     #17-1,d2
  195.  
  196. .XLoop:
  197.      bsr       _SelGerflor
  198.      addq.l    #1,d5
  199.      add.l     #17,d6
  200.      subq.l    #1,d0
  201.      dbeq      d2,.XLoop
  202.  
  203.      add.l     #17,d7
  204.  
  205.      tst.l     d0
  206.      dbeq      d1,.YLoop
  207.      rts
  208. ;fe
  209. ;fs "_SelGerflor"
  210. _CurrentGerflorBank:
  211.      dc.l      Plf1Tiles
  212.  
  213. _SelGerflor:       ; d6/d7=X,Y d5=Gerflor
  214.      movem.l   d0-1/d5-7/a0-1,-(a7)
  215.      mulu      #TileWidth*TileHeight*NbPlanes*2,d5
  216.      add.l     _CurrentGerflorBank(pc),d5
  217.      move.l    d5,a0
  218.  
  219.      mulu      #GuiSelLineSize,d7
  220.      move.l    d6,d0
  221.      lsr.l     #4,d0
  222.      add.l     d0,d7
  223.      add.l     d0,d7
  224.  
  225.      and.l     #$f,d6
  226.  
  227.      move.l    _GuiSelBitmap,a1
  228.      add.l     d7,a1
  229.  
  230.      move.l    #GuiSelBufferWidth,d7
  231.  
  232.      moveq     #TileHeight*NbPlanes-1,d0
  233. .Loop:
  234.      move.w    (a0)+,d1
  235.      swap      d1
  236.      clr.w     d1
  237.      lsr.l     d6,d1
  238.      or.l      d1,(a1)
  239.      add.l     d7,a1
  240.      dbf       d0,.Loop
  241.      movem.l   (a7)+,d0-1/d5-7/a0-1
  242.      rts
  243. ;fe
  244.